package com.bluetooth.lib.util;

import android.util.Log;

import com.bluetooth.lib.client.DispatchMsg;

public class DispatchUtil {

	public static DispatchMsg dispatch(String msg) {
		DispatchMsg dispatchMsg = new DispatchMsg();
		if (msg.length() < 8) {
			return null;
		}

		if (!msg.toUpperCase().startsWith("FEFEF8")) {

			if (!msg.toUpperCase().contains("FEFEF8")) {
				return null;
			} else {
				int cmdHeard = msg.toUpperCase().indexOf("FEFEF8");
				msg = msg.substring(cmdHeard);
			}
		}
		String cmd = msg.substring(0, 8);
		dispatchMsg.cmd = cmd;
		if (cmd.toUpperCase().equals("FEFEF800")) {
			dispatchMsg.datelenght = 3;
			dispatchMsg.data = readData(msg, 8);
			if (dispatchMsg.data.length()/2 >= dispatchMsg.datelenght) {
				dispatchMsg.data = dispatchMsg.data.substring(0,dispatchMsg.datelenght*2);
				dispatchMsg.isreciveover = true;
			}

		} else if (cmd.toUpperCase().equals("FEFEF801")
				|| cmd.toUpperCase().equals("FEFEF802")) {
			if (msg.length() > 10) {
				String hexLength = msg.substring(8, 10);
				int length = Integer.parseInt(hexLength, 16);
				dispatchMsg.datelenght = length;
				dispatchMsg.data = readData(msg, 10);
				if (dispatchMsg.data.length() / 2 >= length) {
					dispatchMsg.data = dispatchMsg.data.substring(0,dispatchMsg.datelenght*2);
					dispatchMsg.isreciveover = true;
				}
			}

		} else if (cmd.toUpperCase().equals("FEFEF803")
				|| cmd.toUpperCase().equals("FEFEF804")) {
			if (msg.length() > 12) {
				String hexLength = msg.substring(8, 12);
				int length = Integer.parseInt(hexLength, 16);
				dispatchMsg.datelenght = length;
				dispatchMsg.data = readData(msg, 12);
				if (dispatchMsg.data.length() / 2 >= length) {
					dispatchMsg.data = dispatchMsg.data.substring(0,dispatchMsg.datelenght*2);
					dispatchMsg.isreciveover = true;
				}

			}
		} else if (cmd.toUpperCase().equals("FEFEF805")) {
			dispatchMsg.datelenght = 1;
			dispatchMsg.data = readData(msg, 8);
			if (dispatchMsg.data.length()/2 >= dispatchMsg.datelenght) {
				dispatchMsg.data = dispatchMsg.data.substring(0,dispatchMsg.datelenght*2);
				dispatchMsg.isreciveover = true;
			}
		} else {
			dispatchMsg.datelenght = 0;
		}
		
		if (dispatchMsg.isreciveover) {
			Log.d("JonPage", "接收有效数据ret:" + msg);
		}
		return dispatchMsg;
	}

	private static String readData(String msg, int position) {
		String data = "";
		if (msg.length() > position) {
			data = msg.substring(position, msg.length());
		}

		return data;
	}
}
